import Decimal from 'decimal.js';

/**
 * 高精度加法
 * @param a - 第一个加数
 * @param b - 第二个加数
 * @returns 计算结果，保留两位小数，向下舍入
 */
export function add(a: number | string, b: number | string): number {
  return new Decimal(a).plus(b).toFixed(2, Decimal.ROUND_DOWN);
}

/**
 * 高精度减法
 * @param a - 被减数
 * @param b - 减数
 * @returns 计算结果，保留两位小数，向下舍入
 */
export function subtract(a: number | string, b: number | string): number {
  return new Decimal(a).minus(b).toFixed(2, Decimal.ROUND_DOWN);
}

/**
 * 高精度乘法
 * @param a - 被乘数
 * @param b - 乘数
 * @returns 计算结果，保留两位小数，向下舍入
 */
export function multiply(a: number | string, b: number | string): number {
  return new Decimal(a).times(b).toFixed(2, Decimal.ROUND_DOWN);
}

/**
 * 高精度除法
 * @param a - 被除数
 * @param b - 除数
 * @returns 计算结果，保留两位小数，向下舍入
 */
export function divide(a: number | string, b: number | string): number {
  return new Decimal(a).dividedBy(b).toFixed(2, Decimal.ROUND_DOWN);
}